home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / QD3DGeometry.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  60.3 KB  |  2,080 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DGeometry.h                                             **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Geometric primitives - data structures and routines         **
  7.  **                                                                          **
  8.  **                                                                          **
  9.  **                                                                          **
  10.  **     Copyright (C) 1991-1997 Apple Computer, Inc. All rights reserved.     **
  11.  **                                                                             **
  12.  **                                                                          **
  13.  *****************************************************************************/
  14. #ifndef QD3DGeometry_h
  15. #define QD3DGeometry_h
  16.  
  17. #include "QD3D.h"
  18. #include "QD3DSet.h"
  19.  
  20. #if defined(PRAGMA_ONCE) && PRAGMA_ONCE
  21.     #pragma once
  22. #endif  /*  PRAGMA_ONCE  */
  23.  
  24. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  25.  
  26. #if defined(__xlc__) || defined(__XLC121__)
  27.     #pragma options enum=int
  28.     #pragma options align=power
  29. #elif defined(__MWERKS__)
  30.     #pragma enumsalwaysint on
  31.     #pragma options align=native
  32. #elif defined(__MRC__) || defined(__SC__)
  33.     #if __option(pack_enums)
  34.         #define PRAGMA_ENUM_RESET_QD3DGEOM 1
  35.     #endif
  36.     #pragma options(!pack_enums)
  37.     #pragma options align=power
  38. #endif
  39.  
  40. #endif  /* OS_MACINTOSH */
  41.  
  42. #ifdef __cplusplus
  43. extern "C" {
  44. #endif    /* __cplusplus */
  45.  
  46. /******************************************************************************
  47.  **                                                                             **
  48.  **                                Geometry Routines                             **
  49.  **                                                                             **
  50.  *****************************************************************************/
  51.  
  52. QD3D_EXPORT TQ3ObjectType QD3D_CALL Q3Geometry_GetType(
  53.     TQ3GeometryObject    geometry);
  54.  
  55. QD3D_EXPORT TQ3Status QD3D_CALL Q3Geometry_GetAttributeSet(
  56.     TQ3GeometryObject    geometry,
  57.     TQ3AttributeSet        *attributeSet);
  58.  
  59. QD3D_EXPORT TQ3Status QD3D_CALL Q3Geometry_SetAttributeSet(
  60.     TQ3GeometryObject    geometry,
  61.     TQ3AttributeSet        attributeSet);
  62.  
  63. QD3D_EXPORT TQ3Status QD3D_CALL Q3Geometry_Submit(
  64.     TQ3GeometryObject    geometry, 
  65.     TQ3ViewObject        view);
  66.  
  67.  
  68. /******************************************************************************
  69.  **                                                                             **
  70.  **                            Box    Data Structure Definitions                     **
  71.  **                                                                             **
  72.  *****************************************************************************/
  73.  
  74. typedef struct TQ3BoxData {
  75.     TQ3Point3D            origin;
  76.     TQ3Vector3D            orientation;
  77.     TQ3Vector3D            majorAxis;
  78.     TQ3Vector3D            minorAxis;
  79.     TQ3AttributeSet        *faceAttributeSet;    /* Ordering : Left, right,     */
  80.                                             /*              front, back,     */
  81.                                             /*              top, bottom    */
  82.     TQ3AttributeSet        boxAttributeSet;
  83. } TQ3BoxData;
  84.  
  85.  
  86. /******************************************************************************
  87.  **                                                                             **
  88.  **                                Box Routines                                 **
  89.  **                                                                             **
  90.  *****************************************************************************/
  91.  
  92. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Box_New(
  93.     const TQ3BoxData    *boxData);
  94.  
  95. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_Submit(
  96.     const TQ3BoxData    *boxData,
  97.     TQ3ViewObject        view);
  98.     
  99. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_SetData(
  100.     TQ3GeometryObject    box, 
  101.     const TQ3BoxData    *boxData);
  102.  
  103. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_GetData(
  104.     TQ3GeometryObject    box,
  105.     TQ3BoxData            *boxData);
  106.  
  107. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_EmptyData(
  108.     TQ3BoxData            *boxData);
  109.     
  110. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_SetOrigin(
  111.     TQ3GeometryObject    box,
  112.     const TQ3Point3D    *origin);
  113.  
  114. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_SetOrientation(
  115.     TQ3GeometryObject    box,
  116.     const TQ3Vector3D    *orientation);
  117.  
  118. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_SetMajorAxis(
  119.     TQ3GeometryObject    box,
  120.     const TQ3Vector3D    *majorAxis);
  121.  
  122. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_SetMinorAxis(
  123.     TQ3GeometryObject    box,
  124.     const TQ3Vector3D    *minorAxis);
  125.  
  126. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_GetOrigin(
  127.     TQ3GeometryObject    box,
  128.     TQ3Point3D            *origin);
  129.  
  130. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_GetOrientation(
  131.     TQ3GeometryObject    box,
  132.     TQ3Vector3D            *orientation);
  133.  
  134. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_GetMajorAxis(
  135.     TQ3GeometryObject    box,
  136.     TQ3Vector3D            *majorAxis);
  137.  
  138. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_GetMinorAxis(
  139.     TQ3GeometryObject    box,
  140.     TQ3Vector3D            *minorAxis);
  141.  
  142. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_GetFaceAttributeSet(
  143.     TQ3GeometryObject    box,
  144.     unsigned long        faceIndex,
  145.     TQ3AttributeSet        *faceAttributeSet);
  146.  
  147. QD3D_EXPORT TQ3Status QD3D_CALL Q3Box_SetFaceAttributeSet(
  148.     TQ3GeometryObject    box,
  149.     unsigned long        faceIndex,
  150.     TQ3AttributeSet        faceAttributeSet);
  151.  
  152.  
  153. /******************************************************************************
  154.  **                                                                             **
  155.  **                        Cone Data Structure Definitions                          **
  156.  **                                                                             **
  157.  *****************************************************************************/
  158.  
  159. typedef struct TQ3ConeData {
  160.     TQ3Point3D            origin;
  161.     TQ3Vector3D            orientation;
  162.     TQ3Vector3D            majorRadius;
  163.     TQ3Vector3D            minorRadius;
  164.     float                uMin, uMax,
  165.                         vMin, vMax;
  166.     TQ3EndCap            caps;
  167.     TQ3AttributeSet        interiorAttributeSet;
  168.     TQ3AttributeSet        faceAttributeSet;
  169.     TQ3AttributeSet        bottomAttributeSet;
  170.     TQ3AttributeSet        coneAttributeSet;
  171. } TQ3ConeData;
  172.  
  173.  
  174. /******************************************************************************
  175.  **                                                                             **
  176.  **                                Cone Routines                                 **
  177.  **                                                                             **
  178.  *****************************************************************************/
  179.  
  180. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Cone_New(
  181.     const TQ3ConeData        *coneData);
  182.  
  183. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_Submit(
  184.     const TQ3ConeData        *coneData, 
  185.     TQ3ViewObject            view);
  186.  
  187. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_SetData(
  188.     TQ3GeometryObject        cone, 
  189.     const TQ3ConeData        *coneData);
  190.  
  191. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_GetData(
  192.     TQ3GeometryObject        cone,
  193.     TQ3ConeData                *coneData);
  194.  
  195. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_SetOrigin(
  196.     TQ3GeometryObject        cone,
  197.     const TQ3Point3D        *origin);
  198.  
  199. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_SetOrientation(
  200.     TQ3GeometryObject        cone,
  201.     const TQ3Vector3D        *orientation);
  202.  
  203. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_SetMajorRadius(
  204.     TQ3GeometryObject        cone,
  205.     const TQ3Vector3D        *majorRadius);
  206.  
  207. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_SetMinorRadius(
  208.     TQ3GeometryObject        cone,
  209.     const TQ3Vector3D        *minorRadius);
  210.  
  211. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_GetOrigin(
  212.     TQ3GeometryObject        cone,
  213.     TQ3Point3D                *origin);
  214.  
  215. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_GetOrientation(
  216.     TQ3GeometryObject        cone,
  217.     TQ3Vector3D                *orientation);
  218.  
  219. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_GetMajorRadius(
  220.     TQ3GeometryObject        cone,
  221.     TQ3Vector3D                *majorRadius);
  222.  
  223. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_GetMinorRadius(
  224.     TQ3GeometryObject        cone,
  225.     TQ3Vector3D                *minorRadius);
  226.     
  227.  
  228. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_SetCaps(
  229.     TQ3GeometryObject        cone,
  230.     TQ3EndCap                caps);
  231.  
  232. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_GetCaps(
  233.     TQ3GeometryObject        cone,
  234.     TQ3EndCap                *caps);
  235.  
  236.  
  237. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_SetBottomAttributeSet(
  238.     TQ3GeometryObject        cone,
  239.     TQ3AttributeSet            bottomAttributeSet);
  240.  
  241. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_GetBottomAttributeSet(
  242.     TQ3GeometryObject        cone,
  243.     TQ3AttributeSet            *bottomAttributeSet);
  244.  
  245. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_SetFaceAttributeSet(
  246.     TQ3GeometryObject        cone,
  247.     TQ3AttributeSet            faceAttributeSet);
  248.  
  249. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_GetFaceAttributeSet(
  250.     TQ3GeometryObject        cone,
  251.     TQ3AttributeSet            *faceAttributeSet);
  252.  
  253. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cone_EmptyData(
  254.     TQ3ConeData                *coneData);
  255.  
  256.  
  257. /******************************************************************************
  258.  **                                                                             **
  259.  **                        Cylinder Data Structure Definitions                     **
  260.  **                                                                             **
  261.  *****************************************************************************/
  262.  
  263. typedef struct TQ3CylinderData {
  264.     TQ3Point3D            origin;
  265.     TQ3Vector3D            orientation;
  266.     TQ3Vector3D            majorRadius;
  267.     TQ3Vector3D            minorRadius;
  268.     float                uMin, uMax,
  269.                         vMin, vMax;
  270.     TQ3EndCap             caps;
  271.     TQ3AttributeSet        interiorAttributeSet;
  272.     TQ3AttributeSet        topAttributeSet;
  273.     TQ3AttributeSet        faceAttributeSet;
  274.     TQ3AttributeSet        bottomAttributeSet;
  275.     TQ3AttributeSet        cylinderAttributeSet;
  276. } TQ3CylinderData;
  277.  
  278.  
  279. /******************************************************************************
  280.  **                                                                             **
  281.  **                            Cylinder Routines                                 **
  282.  **                                                                             **
  283.  *****************************************************************************/
  284.  
  285. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Cylinder_New(
  286.     const TQ3CylinderData    *cylinderData);
  287.  
  288. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_Submit(
  289.     const TQ3CylinderData    *cylinderData,
  290.     TQ3ViewObject            view);
  291.     
  292. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_SetData(
  293.     TQ3GeometryObject        cylinder, 
  294.     const TQ3CylinderData    *cylinderData);
  295.  
  296. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_GetData(
  297.     TQ3GeometryObject        cylinder,
  298.     TQ3CylinderData            *cylinderData);
  299.  
  300. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_SetOrigin(
  301.     TQ3GeometryObject        cylinder,
  302.     const TQ3Point3D        *origin);
  303.  
  304. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_SetOrientation(
  305.     TQ3GeometryObject        cylinder,
  306.     const TQ3Vector3D        *orientation);
  307.  
  308. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_SetMajorRadius(
  309.     TQ3GeometryObject        cylinder,
  310.     const TQ3Vector3D        *majorRadius);
  311.  
  312. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_SetMinorRadius(
  313.     TQ3GeometryObject        cylinder,
  314.     const TQ3Vector3D        *minorRadius);
  315.  
  316. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_GetOrigin(
  317.     TQ3GeometryObject        cylinder,
  318.     TQ3Point3D                *origin);
  319.  
  320. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_GetOrientation(
  321.     TQ3GeometryObject        cylinder,
  322.     TQ3Vector3D                *orientation);
  323.  
  324. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_GetMajorRadius(
  325.     TQ3GeometryObject        cylinder,
  326.     TQ3Vector3D                *majorRadius);
  327.  
  328. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_GetMinorRadius(
  329.     TQ3GeometryObject        cylinder,
  330.     TQ3Vector3D                *minorRadius);
  331.  
  332.  
  333. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_SetCaps(
  334.     TQ3GeometryObject        cylinder,
  335.     TQ3EndCap                caps);
  336.  
  337. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_GetCaps(
  338.     TQ3GeometryObject        cylinder,
  339.     TQ3EndCap                *caps);
  340.  
  341.  
  342. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_SetTopAttributeSet(
  343.     TQ3GeometryObject        cylinder,
  344.     TQ3AttributeSet            topAttributeSet);
  345.  
  346. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_GetTopAttributeSet(
  347.     TQ3GeometryObject        cylinder,
  348.     TQ3AttributeSet            *topAttributeSet);
  349.  
  350. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_SetBottomAttributeSet(
  351.     TQ3GeometryObject        cylinder,
  352.     TQ3AttributeSet            bottomAttributeSet);
  353.  
  354. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_GetBottomAttributeSet(
  355.     TQ3GeometryObject        cylinder,
  356.     TQ3AttributeSet            *bottomAttributeSet);
  357.  
  358. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_SetFaceAttributeSet(
  359.     TQ3GeometryObject        cylinder,
  360.     TQ3AttributeSet            faceAttributeSet);
  361.  
  362. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_GetFaceAttributeSet(
  363.     TQ3GeometryObject        cylinder,
  364.     TQ3AttributeSet            *faceAttributeSet);
  365.  
  366. QD3D_EXPORT TQ3Status QD3D_CALL Q3Cylinder_EmptyData(
  367.     TQ3CylinderData            *cylinderData);
  368.  
  369.  
  370. /******************************************************************************
  371.  **                                                                             **
  372.  **                        Disk Data Structure Definitions                         **
  373.  **                                                                             **
  374.  *****************************************************************************/
  375.  
  376. typedef struct TQ3DiskData {
  377.     TQ3Point3D            origin;
  378.     TQ3Vector3D            majorRadius;
  379.     TQ3Vector3D         minorRadius;
  380.     float                uMin, uMax,
  381.                         vMin, vMax;
  382.     TQ3AttributeSet        diskAttributeSet;
  383. } TQ3DiskData;
  384.  
  385.  
  386. /******************************************************************************
  387.  **                                                                             **
  388.  **                                Disk Routines                                  **
  389.  **                                                                             **
  390.  *****************************************************************************/
  391.  
  392. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Disk_New(
  393.     const TQ3DiskData        *diskData);
  394.  
  395. QD3D_EXPORT TQ3Status QD3D_CALL Q3Disk_Submit(
  396.     const TQ3DiskData        *diskData, 
  397.     TQ3ViewObject            view);
  398.     
  399. QD3D_EXPORT TQ3Status QD3D_CALL Q3Disk_SetData(
  400.     TQ3GeometryObject        disk, 
  401.     const TQ3DiskData        *diskData);
  402.  
  403. QD3D_EXPORT TQ3Status QD3D_CALL Q3Disk_GetData(
  404.     TQ3GeometryObject        disk, 
  405.     TQ3DiskData                *diskData);
  406.  
  407. QD3D_EXPORT TQ3Status QD3D_CALL Q3Disk_SetOrigin(
  408.     TQ3GeometryObject        disk,
  409.     const TQ3Point3D        *origin);
  410.  
  411. QD3D_EXPORT TQ3Status QD3D_CALL Q3Disk_SetMajorRadius(
  412.     TQ3GeometryObject        disk,
  413.     const TQ3Vector3D        *majorRadius);
  414.  
  415. QD3D_EXPORT TQ3Status QD3D_CALL Q3Disk_SetMinorRadius(
  416.     TQ3GeometryObject        disk,
  417.     const TQ3Vector3D        *minorRadius);
  418.  
  419. QD3D_EXPORT TQ3Status QD3D_CALL Q3Disk_GetOrigin(
  420.     TQ3GeometryObject        disk,
  421.     TQ3Point3D                *origin);
  422.  
  423. QD3D_EXPORT TQ3Status QD3D_CALL Q3Disk_GetMajorRadius(
  424.     TQ3GeometryObject        disk,
  425.     TQ3Vector3D                *majorRadius);
  426.  
  427. QD3D_EXPORT TQ3Status QD3D_CALL Q3Disk_GetMinorRadius(
  428.     TQ3GeometryObject        disk,
  429.     TQ3Vector3D                *minorRadius);
  430.         
  431.  
  432. QD3D_EXPORT TQ3Status QD3D_CALL Q3Disk_EmptyData(
  433.     TQ3DiskData                *diskData);
  434.  
  435.  
  436. /******************************************************************************
  437.  **                                                                             **
  438.  **                            Data Structure Definitions                         **
  439.  **                                                                             **
  440.  *****************************************************************************/
  441.  
  442. typedef struct TQ3EllipseData {
  443.     TQ3Point3D            origin;
  444.     TQ3Vector3D            majorRadius;
  445.     TQ3Vector3D            minorRadius;
  446.     float                uMin, uMax;
  447.     TQ3AttributeSet        ellipseAttributeSet;
  448. } TQ3EllipseData;
  449.  
  450.  
  451. /******************************************************************************
  452.  **                                                                             **
  453.  **                                Ellipse Routines                             **
  454.  **                                                                             **
  455.  *****************************************************************************/
  456.  
  457. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Ellipse_New(
  458.     const TQ3EllipseData    *ellipseData);
  459.  
  460. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipse_Submit(
  461.     const TQ3EllipseData    *ellipseData,
  462.     TQ3ViewObject            view);
  463.     
  464. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipse_SetData(
  465.     TQ3GeometryObject        ellipse, 
  466.     const TQ3EllipseData    *ellipseData);
  467.  
  468. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipse_GetData(
  469.     TQ3GeometryObject        ellipse,
  470.     TQ3EllipseData            *ellipseData);
  471.  
  472. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipse_SetOrigin(
  473.     TQ3GeometryObject        ellipse,
  474.     const TQ3Point3D        *origin);
  475.  
  476. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipse_SetMajorRadius(
  477.     TQ3GeometryObject        ellipse,
  478.     const TQ3Vector3D        *majorRadius);
  479.  
  480. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipse_SetMinorRadius(
  481.     TQ3GeometryObject        ellipse,
  482.     const TQ3Vector3D        *minorRadius);
  483.  
  484. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipse_GetOrigin(
  485.     TQ3GeometryObject        ellipse,
  486.     TQ3Point3D                *origin);
  487.  
  488. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipse_GetMajorRadius(
  489.     TQ3GeometryObject        ellipse,
  490.     TQ3Vector3D                *majorRadius);
  491.  
  492. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipse_GetMinorRadius(
  493.     TQ3GeometryObject        ellipse,
  494.     TQ3Vector3D                *minorRadius);
  495.  
  496.  
  497. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipse_EmptyData(
  498.     TQ3EllipseData            *ellipseData);
  499.  
  500.  
  501. /******************************************************************************
  502.  **                                                                          **
  503.  **                            Ellipsoid Data structures                         **
  504.  **                                                                          **
  505.  *****************************************************************************/
  506.  
  507. typedef struct TQ3EllipsoidData {
  508.     TQ3Point3D            origin;
  509.     TQ3Vector3D            orientation;
  510.     TQ3Vector3D            majorRadius;
  511.     TQ3Vector3D            minorRadius;
  512.     float                uMin, uMax,
  513.                         vMin, vMax;
  514.     TQ3EndCap            caps;
  515.     TQ3AttributeSet        interiorAttributeSet;
  516.     TQ3AttributeSet        ellipsoidAttributeSet;
  517. } TQ3EllipsoidData;
  518.  
  519.  
  520. /******************************************************************************
  521.  **                                                                          **
  522.  **                            Procedures                                        **
  523.  **                                                                          **
  524.  *****************************************************************************/
  525.  
  526. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Ellipsoid_New(
  527.     const TQ3EllipsoidData    *ellipsoidData);
  528.  
  529. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_Submit(
  530.     const TQ3EllipsoidData    *ellipsoidData, 
  531.     TQ3ViewObject            view);
  532.     
  533. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_SetData(
  534.     TQ3GeometryObject        ellipsoid, 
  535.     const TQ3EllipsoidData    *ellipsoidData);
  536.  
  537. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_GetData(
  538.     TQ3GeometryObject        ellipsoid,
  539.     TQ3EllipsoidData        *ellipsoidData);
  540.  
  541. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_SetOrigin(
  542.     TQ3GeometryObject        ellipsoid,
  543.     const TQ3Point3D        *origin);
  544.  
  545. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_SetOrientation(
  546.     TQ3GeometryObject        ellipsoid,
  547.     const TQ3Vector3D        *orientation);
  548.  
  549. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_SetMajorRadius(
  550.     TQ3GeometryObject        ellipsoid,
  551.     const TQ3Vector3D        *majorRadius);
  552.  
  553. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_SetMinorRadius(
  554.     TQ3GeometryObject        ellipsoid,
  555.     const TQ3Vector3D        *minorRadius);
  556.  
  557. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_GetOrigin(
  558.     TQ3GeometryObject        ellipsoid,
  559.     TQ3Point3D                *origin);
  560.  
  561. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_GetOrientation(
  562.     TQ3GeometryObject        ellipsoid,
  563.     TQ3Vector3D                *orientation);
  564.  
  565. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_GetMajorRadius(
  566.     TQ3GeometryObject        ellipsoid,
  567.     TQ3Vector3D                *majorRadius);
  568.  
  569. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_GetMinorRadius(
  570.     TQ3GeometryObject        ellipsoid,
  571.     TQ3Vector3D                *minorRadius);
  572.  
  573.  
  574. QD3D_EXPORT TQ3Status QD3D_CALL Q3Ellipsoid_EmptyData(
  575.     TQ3EllipsoidData        *ellipsoidData);
  576.  
  577.  
  578. /******************************************************************************
  579.  **                                                                             **
  580.  **                    General Polygon Data Structure Definitions                 **
  581.  **                                                                             **
  582.  *****************************************************************************/
  583.  
  584. typedef enum TQ3GeneralPolygonShapeHint {
  585.     kQ3GeneralPolygonShapeHintComplex,
  586.     kQ3GeneralPolygonShapeHintConcave,
  587.     kQ3GeneralPolygonShapeHintConvex
  588. } TQ3GeneralPolygonShapeHint;
  589.  
  590. typedef struct TQ3GeneralPolygonContourData {
  591.     unsigned long                    numVertices;        
  592.     TQ3Vertex3D                        *vertices;            
  593. } TQ3GeneralPolygonContourData;
  594.  
  595. typedef struct TQ3GeneralPolygonData {
  596.     unsigned long                    numContours;
  597.     TQ3GeneralPolygonContourData    *contours;
  598.     TQ3GeneralPolygonShapeHint        shapeHint;
  599.     TQ3AttributeSet                    generalPolygonAttributeSet;
  600. } TQ3GeneralPolygonData;
  601.  
  602.  
  603. /******************************************************************************
  604.  **                                                                             **
  605.  **                            General polygon Routines                         **
  606.  **                                                                             **
  607.  *****************************************************************************/
  608.  
  609. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3GeneralPolygon_New(
  610.     const TQ3GeneralPolygonData        *generalPolygonData);
  611.  
  612. QD3D_EXPORT TQ3Status QD3D_CALL Q3GeneralPolygon_Submit(
  613.      const TQ3GeneralPolygonData    *generalPolygonData,
  614.      TQ3ViewObject                    view);
  615.     
  616. QD3D_EXPORT TQ3Status QD3D_CALL Q3GeneralPolygon_SetData(
  617.     TQ3GeometryObject                generalPolygon, 
  618.     const TQ3GeneralPolygonData        *generalPolygonData);
  619.  
  620. QD3D_EXPORT TQ3Status QD3D_CALL Q3GeneralPolygon_GetData(
  621.     TQ3GeometryObject                polygon,
  622.     TQ3GeneralPolygonData            *generalPolygonData);
  623.  
  624. QD3D_EXPORT TQ3Status QD3D_CALL Q3GeneralPolygon_EmptyData(
  625.     TQ3GeneralPolygonData            *generalPolygonData);
  626.  
  627. QD3D_EXPORT TQ3Status QD3D_CALL Q3GeneralPolygon_GetVertexPosition(
  628.     TQ3GeometryObject                generalPolygon,
  629.     unsigned long                    contourIndex,
  630.     unsigned long                    pointIndex,
  631.     TQ3Point3D                        *position);
  632.  
  633. QD3D_EXPORT TQ3Status QD3D_CALL Q3GeneralPolygon_SetVertexPosition(
  634.     TQ3GeometryObject                generalPolygon,
  635.     unsigned long                    contourIndex,
  636.     unsigned long                    pointIndex,
  637.     const TQ3Point3D                *position);
  638.     
  639. QD3D_EXPORT TQ3Status QD3D_CALL Q3GeneralPolygon_GetVertexAttributeSet(
  640.     TQ3GeometryObject                generalPolygon,
  641.     unsigned long                    contourIndex,
  642.     unsigned long                    pointIndex,
  643.     TQ3AttributeSet                    *attributeSet);
  644.  
  645. QD3D_EXPORT TQ3Status QD3D_CALL Q3GeneralPolygon_SetVertexAttributeSet(
  646.     TQ3GeometryObject                generalPolygon,
  647.     unsigned long                    contourIndex,
  648.     unsigned long                    pointIndex,
  649.     TQ3AttributeSet                    attributeSet);
  650.  
  651. QD3D_EXPORT TQ3Status QD3D_CALL Q3GeneralPolygon_SetShapeHint(
  652.     TQ3GeometryObject                generalPolygon,
  653.     TQ3GeneralPolygonShapeHint        shapeHint);
  654.  
  655. QD3D_EXPORT TQ3Status QD3D_CALL Q3GeneralPolygon_GetShapeHint(
  656.     TQ3GeometryObject                generalPolygon,
  657.     TQ3GeneralPolygonShapeHint        *shapeHint);
  658.  
  659.  
  660. /******************************************************************************
  661.  **                                                                             **
  662.  **                        Line Data Structure Definitions                         **
  663.  **                                                                             **
  664.  *****************************************************************************/
  665.  
  666. typedef struct TQ3LineData {
  667.     TQ3Vertex3D            vertices[2];
  668.     TQ3AttributeSet        lineAttributeSet;
  669. } TQ3LineData;
  670.  
  671.  
  672. /******************************************************************************
  673.  **                                                                             **
  674.  **                            Line Routines                                     **
  675.  **                                                                             **
  676.  *****************************************************************************/
  677.  
  678. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Line_New(
  679.     const TQ3LineData         *lineData);
  680.  
  681. QD3D_EXPORT TQ3Status QD3D_CALL Q3Line_Submit(
  682.     const TQ3LineData         *lineData, 
  683.     TQ3ViewObject             view);
  684.  
  685. QD3D_EXPORT TQ3Status QD3D_CALL Q3Line_GetData(
  686.     TQ3GeometryObject         line,
  687.     TQ3LineData             *lineData);
  688.     
  689. QD3D_EXPORT TQ3Status QD3D_CALL Q3Line_SetData(
  690.     TQ3GeometryObject         line,
  691.     const TQ3LineData         *lineData);
  692.     
  693. QD3D_EXPORT TQ3Status QD3D_CALL Q3Line_GetVertexPosition(
  694.     TQ3GeometryObject        line,
  695.     unsigned long            index,
  696.     TQ3Point3D                *position);
  697.  
  698. QD3D_EXPORT TQ3Status QD3D_CALL Q3Line_SetVertexPosition(
  699.     TQ3GeometryObject        line,
  700.     unsigned long            index,
  701.     const TQ3Point3D        *position);
  702.  
  703. QD3D_EXPORT TQ3Status QD3D_CALL Q3Line_GetVertexAttributeSet(
  704.     TQ3GeometryObject        line,
  705.     unsigned long            index,
  706.     TQ3AttributeSet            *attributeSet);
  707.  
  708. QD3D_EXPORT TQ3Status QD3D_CALL Q3Line_SetVertexAttributeSet(
  709.     TQ3GeometryObject        line,
  710.     unsigned long            index,
  711.     TQ3AttributeSet            attributeSet);
  712.     
  713. QD3D_EXPORT TQ3Status QD3D_CALL Q3Line_EmptyData(
  714.     TQ3LineData             *lineData);
  715.  
  716.  
  717. /******************************************************************************
  718.  **                                                                             **
  719.  **                        Marker Data Structure Definitions                     **
  720.  **                                                                             **
  721.  *****************************************************************************/
  722.  
  723. typedef struct TQ3MarkerData {
  724.     TQ3Point3D            location;
  725.     long                xOffset;
  726.     long                yOffset;
  727.     TQ3Bitmap            bitmap;
  728.     TQ3AttributeSet        markerAttributeSet;
  729. } TQ3MarkerData;
  730.  
  731.  
  732. /******************************************************************************
  733.  **                                                                             **
  734.  **                                Marker Routines                                 **
  735.  **                                                                             **
  736.  *****************************************************************************/
  737.  
  738. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Marker_New(
  739.     const TQ3MarkerData        *markerData);
  740.  
  741. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_Submit(
  742.     const TQ3MarkerData        *markerData,
  743.     TQ3ViewObject            view);
  744.     
  745. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_SetData(
  746.     TQ3GeometryObject        geometry, 
  747.     const TQ3MarkerData        *markerData);
  748.  
  749. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_GetData(
  750.     TQ3GeometryObject        geometry,
  751.     TQ3MarkerData            *markerData);
  752.  
  753. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_EmptyData(
  754.     TQ3MarkerData            *markerData);
  755.     
  756. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_GetPosition(
  757.     TQ3GeometryObject        marker,
  758.     TQ3Point3D                *location);
  759.  
  760. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_SetPosition(
  761.     TQ3GeometryObject        marker,
  762.     const TQ3Point3D        *location);
  763.     
  764. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_GetXOffset(
  765.     TQ3GeometryObject        marker,
  766.     long                    *xOffset);
  767.  
  768. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_SetXOffset(
  769.     TQ3GeometryObject        marker,
  770.     long                    xOffset);
  771.  
  772. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_GetYOffset(
  773.     TQ3GeometryObject        marker,
  774.     long                    *yOffset);
  775.  
  776. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_SetYOffset(
  777.     TQ3GeometryObject        marker,
  778.     long                    yOffset);
  779.  
  780. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_GetBitmap(
  781.     TQ3GeometryObject        marker,
  782.     TQ3Bitmap                *bitmap);
  783.  
  784. QD3D_EXPORT TQ3Status QD3D_CALL Q3Marker_SetBitmap(
  785.     TQ3GeometryObject        marker,
  786.     const TQ3Bitmap            *bitmap);
  787.  
  788.  
  789. /******************************************************************************
  790.  **                                                                             **
  791.  **                        Mesh Data Structure Definitions                         **
  792.  **                                                                             **
  793.  *****************************************************************************/
  794.  
  795. typedef struct TQ3MeshComponentPrivate     *TQ3MeshComponent;
  796. typedef struct TQ3MeshVertexPrivate     *TQ3MeshVertex;
  797. typedef struct TQ3MeshVertexPrivate     *TQ3MeshFace;
  798. typedef struct TQ3MeshEdgeRepPrivate     *TQ3MeshEdge;
  799. typedef struct TQ3MeshContourPrivate    *TQ3MeshContour;
  800.  
  801.  
  802. /******************************************************************************
  803.  **                                                                             **
  804.  **                            Mesh Routines                                      **
  805.  **                                                                             **
  806.  *****************************************************************************/
  807.  
  808. /*
  809.  *  Constructors
  810.  */
  811. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Mesh_New(
  812.     void);
  813.  
  814. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_VertexNew(
  815.     TQ3GeometryObject    mesh,
  816.     const TQ3Vertex3D    *vertex);
  817.             
  818. QD3D_EXPORT TQ3MeshFace QD3D_CALL Q3Mesh_FaceNew(
  819.     TQ3GeometryObject    mesh,
  820.     unsigned long        numVertices,
  821.     const TQ3MeshVertex    *vertices,
  822.     TQ3AttributeSet        attributeSet);
  823.  
  824. /*
  825.  *  Destructors
  826.  */
  827. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_VertexDelete( 
  828.     TQ3GeometryObject    mesh,
  829.     TQ3MeshVertex        vertex);
  830.  
  831. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_FaceDelete(
  832.     TQ3GeometryObject    mesh,
  833.     TQ3MeshFace            face);
  834.  
  835. /*
  836.  * Methods
  837.  */
  838. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_DelayUpdates(
  839.     TQ3GeometryObject    mesh);
  840.  
  841. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_ResumeUpdates(
  842.     TQ3GeometryObject    mesh);
  843.     
  844. QD3D_EXPORT TQ3MeshContour QD3D_CALL Q3Mesh_FaceToContour(
  845.     TQ3GeometryObject    mesh,
  846.     TQ3MeshFace            containerFace,
  847.     TQ3MeshFace            face);
  848.     
  849. QD3D_EXPORT TQ3MeshFace QD3D_CALL Q3Mesh_ContourToFace(
  850.     TQ3GeometryObject    mesh,
  851.     TQ3MeshContour        contour);
  852.  
  853. /*
  854.  * Mesh
  855.  */
  856. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetNumComponents(
  857.     TQ3GeometryObject    mesh,
  858.     unsigned long        *numComponents);
  859.  
  860. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetNumEdges(
  861.     TQ3GeometryObject    mesh,
  862.     unsigned long        *numEdges);
  863.  
  864. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetNumVertices(
  865.     TQ3GeometryObject    mesh,
  866.     unsigned long        *numVertices);
  867.  
  868. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetNumFaces(
  869.     TQ3GeometryObject    mesh,
  870.     unsigned long        *numFaces);
  871.  
  872. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetNumCorners(
  873.     TQ3GeometryObject    mesh,
  874.     unsigned long        *numCorners);
  875.  
  876. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetOrientable(
  877.     TQ3GeometryObject    mesh,
  878.     TQ3Boolean            *orientable);
  879.  
  880. /*
  881.  * Component
  882.  */
  883. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetComponentNumVertices(
  884.     TQ3GeometryObject    mesh,
  885.     TQ3MeshComponent    component,
  886.     unsigned long        *numVertices);
  887.  
  888. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetComponentNumEdges(
  889.     TQ3GeometryObject    mesh,
  890.     TQ3MeshComponent    component,
  891.     unsigned long        *numEdges);
  892.  
  893. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetComponentBoundingBox(
  894.     TQ3GeometryObject    mesh,
  895.     TQ3MeshComponent    component,
  896.     TQ3BoundingBox        *boundingBox);
  897.  
  898. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetComponentOrientable(
  899.     TQ3GeometryObject    mesh,
  900.     TQ3MeshComponent    component,
  901.     TQ3Boolean            *orientable);
  902.  
  903. /*
  904.  * Vertex
  905.  */
  906. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetVertexCoordinates(
  907.     TQ3GeometryObject    mesh,
  908.     TQ3MeshVertex        vertex,
  909.     TQ3Point3D            *coordinates);
  910.  
  911. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetVertexIndex(
  912.     TQ3GeometryObject    mesh,
  913.     TQ3MeshVertex        vertex,
  914.     unsigned long        *index);
  915.  
  916. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetVertexOnBoundary(
  917.     TQ3GeometryObject    mesh,
  918.     TQ3MeshVertex        vertex,
  919.     TQ3Boolean            *onBoundary);
  920.  
  921. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetVertexComponent(
  922.     TQ3GeometryObject    mesh,
  923.     TQ3MeshVertex        vertex,
  924.     TQ3MeshComponent    *component);
  925.  
  926. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetVertexAttributeSet(
  927.     TQ3GeometryObject    mesh,
  928.     TQ3MeshVertex        vertex,
  929.     TQ3AttributeSet        *attributeSet);
  930.  
  931.  
  932. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_SetVertexCoordinates(
  933.     TQ3GeometryObject    mesh,
  934.     TQ3MeshVertex        vertex,
  935.     const TQ3Point3D    *coordinates);
  936.  
  937. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_SetVertexAttributeSet(
  938.     TQ3GeometryObject    mesh,
  939.     TQ3MeshVertex        vertex,
  940.     TQ3AttributeSet        attributeSet);
  941.  
  942. /*
  943.  * Face
  944.  */
  945. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetFaceNumVertices(
  946.     TQ3GeometryObject    mesh,
  947.     TQ3MeshFace            face,
  948.     unsigned long        *numVertices);
  949.  
  950. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetFacePlaneEquation(
  951.     TQ3GeometryObject    mesh,
  952.     TQ3MeshFace            face,
  953.     TQ3PlaneEquation    *planeEquation);
  954.  
  955. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetFaceNumContours(
  956.     TQ3GeometryObject    mesh,
  957.     TQ3MeshFace            face,
  958.     unsigned long        *numContours);
  959.  
  960. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetFaceIndex(
  961.     TQ3GeometryObject    mesh,
  962.     TQ3MeshFace            face,
  963.     unsigned long        *index);
  964.  
  965. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetFaceComponent(
  966.     TQ3GeometryObject    mesh,
  967.     TQ3MeshFace            face,
  968.     TQ3MeshComponent    *component);
  969.  
  970. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetFaceAttributeSet(
  971.     TQ3GeometryObject    mesh,
  972.     TQ3MeshFace            face,
  973.     TQ3AttributeSet        *attributeSet);
  974.  
  975.  
  976. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_SetFaceAttributeSet(
  977.     TQ3GeometryObject    mesh,
  978.     TQ3MeshFace            face,
  979.     TQ3AttributeSet        attributeSet);
  980.  
  981. /*
  982.  * Edge
  983.  */
  984. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetEdgeVertices(
  985.     TQ3GeometryObject    mesh,
  986.     TQ3MeshEdge            edge,
  987.     TQ3MeshVertex        *vertex1,
  988.     TQ3MeshVertex        *vertex2);
  989.  
  990. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetEdgeFaces(
  991.     TQ3GeometryObject    mesh,
  992.     TQ3MeshEdge            edge,
  993.     TQ3MeshFace            *face1,
  994.     TQ3MeshFace            *face2);
  995.  
  996. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetEdgeOnBoundary(
  997.     TQ3GeometryObject    mesh,
  998.     TQ3MeshEdge            edge,
  999.     TQ3Boolean            *onBoundary);
  1000.  
  1001. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetEdgeComponent(
  1002.     TQ3GeometryObject    mesh,
  1003.     TQ3MeshEdge            edge,
  1004.     TQ3MeshComponent    *component);
  1005.  
  1006. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetEdgeAttributeSet(
  1007.     TQ3GeometryObject    mesh,
  1008.     TQ3MeshEdge            edge,
  1009.     TQ3AttributeSet        *attributeSet);
  1010.     
  1011.  
  1012. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_SetEdgeAttributeSet(
  1013.     TQ3GeometryObject    mesh,
  1014.     TQ3MeshEdge            edge,
  1015.     TQ3AttributeSet        attributeSet);
  1016.     
  1017. /*
  1018.  * Contour
  1019.  */
  1020. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetContourFace(
  1021.     TQ3GeometryObject    mesh,
  1022.     TQ3MeshContour        contour,
  1023.     TQ3MeshFace            *face);
  1024.  
  1025. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetContourNumVertices(
  1026.     TQ3GeometryObject    mesh,
  1027.     TQ3MeshContour        contour,
  1028.     unsigned long        *numVertices);
  1029.  
  1030. /*
  1031.  * Corner
  1032.  */
  1033. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_GetCornerAttributeSet(
  1034.     TQ3GeometryObject    mesh,
  1035.     TQ3MeshVertex        vertex,
  1036.     TQ3MeshFace            face,
  1037.     TQ3AttributeSet        *attributeSet);
  1038.  
  1039. QD3D_EXPORT TQ3Status QD3D_CALL Q3Mesh_SetCornerAttributeSet(
  1040.     TQ3GeometryObject    mesh,
  1041.     TQ3MeshVertex        vertex,
  1042.     TQ3MeshFace            face,
  1043.     TQ3AttributeSet        attributeSet);
  1044.  
  1045. /*
  1046.  * Public Mesh Iterators
  1047.  */
  1048. typedef struct TQ3MeshIterator {
  1049.     void                *var1;
  1050.     void                *var2;
  1051.     void                *var3;
  1052.     struct {
  1053.         void            *field1;
  1054.         char            field2[4];
  1055.     } var4;
  1056. } TQ3MeshIterator;
  1057.  
  1058. QD3D_EXPORT TQ3MeshComponent QD3D_CALL Q3Mesh_FirstMeshComponent(
  1059.     TQ3GeometryObject    mesh,
  1060.     TQ3MeshIterator        *iterator);
  1061.     
  1062. QD3D_EXPORT TQ3MeshComponent QD3D_CALL Q3Mesh_NextMeshComponent(
  1063.     TQ3MeshIterator        *iterator);
  1064.  
  1065. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_FirstComponentVertex(
  1066.     TQ3MeshComponent    component,
  1067.     TQ3MeshIterator        *iterator);
  1068.     
  1069. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_NextComponentVertex(
  1070.     TQ3MeshIterator        *iterator);
  1071.  
  1072. QD3D_EXPORT TQ3MeshEdge QD3D_CALL Q3Mesh_FirstComponentEdge(
  1073.     TQ3MeshComponent    component,
  1074.     TQ3MeshIterator        *iterator);
  1075.     
  1076. QD3D_EXPORT TQ3MeshEdge QD3D_CALL Q3Mesh_NextComponentEdge(
  1077.     TQ3MeshIterator        *iterator);
  1078.  
  1079. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_FirstMeshVertex(
  1080.     TQ3GeometryObject    mesh,
  1081.     TQ3MeshIterator        *iterator);
  1082.  
  1083. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_NextMeshVertex(
  1084.     TQ3MeshIterator        *iterator);
  1085.  
  1086. QD3D_EXPORT TQ3MeshFace QD3D_CALL Q3Mesh_FirstMeshFace(
  1087.     TQ3GeometryObject    mesh,
  1088.     TQ3MeshIterator        *iterator);
  1089.  
  1090. QD3D_EXPORT TQ3MeshFace QD3D_CALL Q3Mesh_NextMeshFace(
  1091.     TQ3MeshIterator        *iterator);
  1092.  
  1093. QD3D_EXPORT TQ3MeshEdge QD3D_CALL Q3Mesh_FirstMeshEdge(
  1094.     TQ3GeometryObject    mesh,
  1095.     TQ3MeshIterator        *iterator);
  1096.  
  1097. QD3D_EXPORT TQ3MeshEdge QD3D_CALL Q3Mesh_NextMeshEdge(
  1098.     TQ3MeshIterator        *iterator);
  1099.  
  1100. QD3D_EXPORT TQ3MeshEdge QD3D_CALL Q3Mesh_FirstVertexEdge(
  1101.     TQ3MeshVertex        vertex,
  1102.     TQ3MeshIterator        *iterator);
  1103.     
  1104. QD3D_EXPORT TQ3MeshEdge QD3D_CALL Q3Mesh_NextVertexEdge(
  1105.     TQ3MeshIterator        *iterator);
  1106.  
  1107. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_FirstVertexVertex(
  1108.     TQ3MeshVertex        vertex,
  1109.     TQ3MeshIterator        *iterator);
  1110.     
  1111. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_NextVertexVertex(
  1112.     TQ3MeshIterator        *iterator);
  1113.  
  1114. QD3D_EXPORT TQ3MeshFace QD3D_CALL Q3Mesh_FirstVertexFace(
  1115.     TQ3MeshVertex        vertex,
  1116.     TQ3MeshIterator        *iterator);
  1117.     
  1118. QD3D_EXPORT TQ3MeshFace QD3D_CALL Q3Mesh_NextVertexFace(
  1119.     TQ3MeshIterator        *iterator);
  1120.  
  1121. QD3D_EXPORT TQ3MeshEdge QD3D_CALL Q3Mesh_FirstFaceEdge(
  1122.     TQ3MeshFace            face,
  1123.     TQ3MeshIterator        *iterator);
  1124.     
  1125. QD3D_EXPORT TQ3MeshEdge QD3D_CALL Q3Mesh_NextFaceEdge(
  1126.     TQ3MeshIterator        *iterator);
  1127.  
  1128. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_FirstFaceVertex(
  1129.     TQ3MeshFace            face,
  1130.     TQ3MeshIterator        *iterator);
  1131.     
  1132. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_NextFaceVertex(
  1133.     TQ3MeshIterator        *iterator);
  1134.  
  1135. QD3D_EXPORT TQ3MeshFace QD3D_CALL Q3Mesh_FirstFaceFace(
  1136.     TQ3MeshFace            face,
  1137.     TQ3MeshIterator        *iterator);
  1138.     
  1139. QD3D_EXPORT TQ3MeshFace QD3D_CALL Q3Mesh_NextFaceFace(
  1140.     TQ3MeshIterator        *iterator);
  1141.  
  1142. QD3D_EXPORT TQ3MeshContour QD3D_CALL Q3Mesh_FirstFaceContour(
  1143.     TQ3MeshFace            face,
  1144.     TQ3MeshIterator        *iterator);
  1145.  
  1146. QD3D_EXPORT TQ3MeshContour QD3D_CALL Q3Mesh_NextFaceContour(
  1147.     TQ3MeshIterator        *iterator);
  1148.  
  1149. QD3D_EXPORT TQ3MeshEdge QD3D_CALL Q3Mesh_FirstContourEdge(
  1150.     TQ3MeshContour        contour,
  1151.     TQ3MeshIterator        *iterator);
  1152.     
  1153. QD3D_EXPORT TQ3MeshEdge QD3D_CALL Q3Mesh_NextContourEdge(
  1154.     TQ3MeshIterator        *iterator);
  1155.  
  1156. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_FirstContourVertex(
  1157.     TQ3MeshContour        contour,
  1158.     TQ3MeshIterator        *iterator);
  1159.     
  1160. QD3D_EXPORT TQ3MeshVertex QD3D_CALL Q3Mesh_NextContourVertex(
  1161.     TQ3MeshIterator        *iterator);
  1162.  
  1163. QD3D_EXPORT TQ3MeshFace QD3D_CALL Q3Mesh_FirstContourFace(
  1164.     TQ3MeshContour        contour,
  1165.     TQ3MeshIterator        *iterator);
  1166.     
  1167. QD3D_EXPORT TQ3MeshFace QD3D_CALL Q3Mesh_NextContourFace(
  1168.     TQ3MeshIterator        *iterator);
  1169.  
  1170. #define    Q3ForEachMeshComponent(m,c,i)                                        \
  1171.     for ( (c) = Q3Mesh_FirstMeshComponent((m),(i));                            \
  1172.           (c);                                                                \
  1173.           (c) = Q3Mesh_NextMeshComponent((i)) )
  1174.  
  1175. #define Q3ForEachComponentVertex(c,v,i)                                        \
  1176.     for ( (v) = Q3Mesh_FirstComponentVertex((c),(i));                        \
  1177.           (v);                                                                \
  1178.           (v) = Q3Mesh_NextComponentVertex((i)) )
  1179.           
  1180. #define Q3ForEachComponentEdge(c,e,i)                                        \
  1181.     for ( (e) = Q3Mesh_FirstComponentEdge((c),(i));                            \
  1182.           (e);                                                                \
  1183.           (e) = Q3Mesh_NextComponentEdge((i)) )
  1184.  
  1185. #define Q3ForEachMeshVertex(m,v,i)                                            \
  1186.     for ( (v) = Q3Mesh_FirstMeshVertex((m),(i));                            \
  1187.           (v);                                                                \
  1188.           (v) = Q3Mesh_NextMeshVertex((i)) )
  1189.  
  1190. #define Q3ForEachMeshFace(m,f,i)                                            \
  1191.     for ( (f) = Q3Mesh_FirstMeshFace((m),(i));                                \
  1192.           (f);                                                                \
  1193.           (f) = Q3Mesh_NextMeshFace((i)) )
  1194.  
  1195. #define Q3ForEachMeshEdge(m,e,i)                                            \
  1196.     for ( (e) = Q3Mesh_FirstMeshEdge((m),(i));                                \
  1197.           (e);                                                                \
  1198.           (e) = Q3Mesh_NextMeshEdge((i)) )
  1199.  
  1200. #define Q3ForEachVertexEdge(v,e,i)                                            \
  1201.     for ( (e) = Q3Mesh_FirstVertexEdge((v),(i));                            \
  1202.           (e);                                                                \
  1203.           (e) = Q3Mesh_NextVertexEdge((i)) )
  1204.  
  1205. #define Q3ForEachVertexVertex(v,n,i)                                        \
  1206.     for ( (n) = Q3Mesh_FirstVertexVertex((v),(i));                            \
  1207.           (n);                                                                \
  1208.           (n) = Q3Mesh_NextVertexVertex((i)) )
  1209.  
  1210. #define Q3ForEachVertexFace(v,f,i)                                            \
  1211.     for ( (f) = Q3Mesh_FirstVertexFace((v),(i));                            \
  1212.           (f);                                                                \
  1213.           (f) = Q3Mesh_NextVertexFace((i)) )
  1214.  
  1215. #define Q3ForEachFaceEdge(f,e,i)                                            \
  1216.     for ( (e) = Q3Mesh_FirstFaceEdge((f),(i));                                \
  1217.           (e);                                                                \
  1218.           (e) = Q3Mesh_NextFaceEdge((i)) )
  1219.  
  1220. #define Q3ForEachFaceVertex(f,v,i)                                            \
  1221.     for ( (v) = Q3Mesh_FirstFaceVertex((f),(i));                            \
  1222.           (v);                                                                \
  1223.           (v) = Q3Mesh_NextFaceVertex((i)) )
  1224.     
  1225. #define Q3ForEachFaceFace(f,n,i)                                            \
  1226.     for ( (n) = Q3Mesh_FirstFaceFace((f),(i));                              \
  1227.           (n);                                                                \
  1228.           (n) = Q3Mesh_NextFaceFace((i)) )
  1229.           
  1230. #define Q3ForEachFaceContour(f,h,i)                                            \
  1231.     for ( (h) = Q3Mesh_FirstFaceContour((f),(i));                            \
  1232.           (h);                                                                \
  1233.           (h) = Q3Mesh_NextFaceContour((i)) )
  1234.  
  1235. #define Q3ForEachContourEdge(h,e,i)                                            \
  1236.     for ( (e) = Q3Mesh_FirstContourEdge((h),(i));                            \
  1237.           (e);                                                                \
  1238.           (e) = Q3Mesh_NextContourEdge((i)) )
  1239.  
  1240. #define Q3ForEachContourVertex(h,v,i)                                        \
  1241.     for ( (v) = Q3Mesh_FirstContourVertex((h),(i));                            \
  1242.           (v);                                                                \
  1243.           (v) = Q3Mesh_NextContourVertex((i)) )
  1244.  
  1245. #define Q3ForEachContourFace(h,f,i)                                            \
  1246.     for ( (f) = Q3Mesh_FirstContourFace((h),(i));                            \
  1247.           (f);                                                                \
  1248.           (f) = Q3Mesh_NextContourFace((i)) )
  1249.  
  1250.  
  1251. /******************************************************************************
  1252.  **                                                                             **
  1253.  **                            Maximum order for NURB Curves                     **
  1254.  **                                                                             **
  1255.  *****************************************************************************/
  1256.  
  1257. #define kQ3NURBCurveMaxOrder    16
  1258.  
  1259.  
  1260. /******************************************************************************
  1261.  **                                                                             **
  1262.  **                            NURB CurveData Structure Definitions                         **
  1263.  **                                                                             **
  1264.  *****************************************************************************/
  1265.  
  1266. typedef struct TQ3NURBCurveData {
  1267.      unsigned long            order;
  1268.      unsigned long            numPoints;
  1269.      TQ3RationalPoint4D        *controlPoints;
  1270.      float                    *knots;
  1271.      TQ3AttributeSet            curveAttributeSet;
  1272. } TQ3NURBCurveData;
  1273.  
  1274.  
  1275. /******************************************************************************
  1276.  **                                                                             **
  1277.  **                                NURB Curve Routines                             **
  1278.  **                                                                             **
  1279.  *****************************************************************************/
  1280.  
  1281. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3NURBCurve_New(
  1282.     const TQ3NURBCurveData        *curveData);
  1283.  
  1284. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBCurve_Submit(
  1285.     const TQ3NURBCurveData        *curveData,
  1286.     TQ3ViewObject                view);
  1287.  
  1288. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBCurve_SetData(
  1289.     TQ3GeometryObject            curve, 
  1290.     const TQ3NURBCurveData        *nurbCurveData);
  1291.  
  1292. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBCurve_GetData(
  1293.     TQ3GeometryObject            curve,
  1294.     TQ3NURBCurveData            *nurbCurveData); 
  1295.  
  1296. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBCurve_EmptyData(
  1297.     TQ3NURBCurveData            *nurbCurveData);
  1298.  
  1299. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBCurve_SetControlPoint(
  1300.     TQ3GeometryObject            curve,
  1301.     unsigned long                pointIndex,
  1302.     const TQ3RationalPoint4D    *point4D);
  1303.     
  1304. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBCurve_GetControlPoint(
  1305.     TQ3GeometryObject            curve,
  1306.     unsigned long                pointIndex,
  1307.     TQ3RationalPoint4D            *point4D);
  1308.  
  1309. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBCurve_SetKnot(
  1310.     TQ3GeometryObject            curve,
  1311.     unsigned long                knotIndex,
  1312.     float                        knotValue);
  1313.  
  1314. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBCurve_GetKnot(
  1315.     TQ3GeometryObject            curve,
  1316.     unsigned long                knotIndex,
  1317.     float                        *knotValue);
  1318.  
  1319.  
  1320. /******************************************************************************
  1321.  **                                                                             **
  1322.  **                            Maximum NURB Patch Order                         **
  1323.  **                                                                             **
  1324.  *****************************************************************************/
  1325.  
  1326. #define    kQ3NURBPatchMaxOrder    11
  1327.  
  1328. /******************************************************************************
  1329.  **                                                                             **
  1330.  **                        NURB Patch Data Structure Definitions                 **
  1331.  **                                                                             **
  1332.  *****************************************************************************/
  1333.  
  1334. typedef struct TQ3NURBPatchTrimCurveData {
  1335.      unsigned long                    order;
  1336.      unsigned long                    numPoints;
  1337.      TQ3RationalPoint3D                *controlPoints;    
  1338.     float                            *knots;    
  1339. } TQ3NURBPatchTrimCurveData;
  1340.  
  1341. typedef struct TQ3NURBPatchTrimLoopData {
  1342.     unsigned long                    numTrimCurves;
  1343.     TQ3NURBPatchTrimCurveData        *trimCurves;
  1344. } TQ3NURBPatchTrimLoopData;
  1345.  
  1346. typedef struct TQ3NURBPatchData {
  1347.     unsigned long                        uOrder;
  1348.     unsigned long                    vOrder;
  1349.     unsigned long                    numRows;
  1350.     unsigned long                        numColumns;                                  
  1351.     TQ3RationalPoint4D                *controlPoints;
  1352.     float                            *uKnots; 
  1353.     float                            *vKnots;
  1354.     unsigned long                    numTrimLoops;
  1355.     TQ3NURBPatchTrimLoopData        *trimLoops;
  1356.     TQ3AttributeSet                    patchAttributeSet;
  1357. } TQ3NURBPatchData;
  1358.  
  1359.  
  1360. /******************************************************************************
  1361.  **                                                                             **
  1362.  **                                NURB Patch Routines                             **
  1363.  **                                                                             **
  1364.  *****************************************************************************/
  1365.  
  1366. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3NURBPatch_New(
  1367.     const TQ3NURBPatchData        *nurbPatchData);
  1368.  
  1369. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBPatch_Submit(
  1370.     const TQ3NURBPatchData        *nurbPatchData,
  1371.     TQ3ViewObject                view);
  1372.  
  1373. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBPatch_SetData(
  1374.     TQ3GeometryObject            nurbPatch, 
  1375.     const TQ3NURBPatchData        *nurbPatchData);
  1376.  
  1377. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBPatch_GetData(
  1378.     TQ3GeometryObject            nurbPatch, 
  1379.     TQ3NURBPatchData            *nurbPatchData);
  1380.  
  1381. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBPatch_SetControlPoint(
  1382.     TQ3GeometryObject            nurbPatch,
  1383.     unsigned long                rowIndex,
  1384.     unsigned long                columnIndex,
  1385.     const TQ3RationalPoint4D    *point4D);
  1386.  
  1387. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBPatch_GetControlPoint(
  1388.     TQ3GeometryObject            nurbPatch,
  1389.     unsigned long                rowIndex,
  1390.     unsigned long                columnIndex,
  1391.     TQ3RationalPoint4D            *point4D);
  1392.  
  1393. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBPatch_SetUKnot(
  1394.     TQ3GeometryObject            nurbPatch,
  1395.     unsigned long                knotIndex,
  1396.     float                        knotValue);
  1397.  
  1398. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBPatch_SetVKnot(
  1399.     TQ3GeometryObject            nurbPatch,
  1400.     unsigned long                knotIndex,
  1401.     float                        knotValue);
  1402.     
  1403. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBPatch_GetUKnot(
  1404.     TQ3GeometryObject            nurbPatch,
  1405.     unsigned long                knotIndex,
  1406.     float                        *knotValue);
  1407.  
  1408. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBPatch_GetVKnot(
  1409.     TQ3GeometryObject            nurbPatch,
  1410.     unsigned long                knotIndex,
  1411.     float                        *knotValue);
  1412.  
  1413. QD3D_EXPORT TQ3Status QD3D_CALL Q3NURBPatch_EmptyData(
  1414.     TQ3NURBPatchData            *nurbPatchData);
  1415.  
  1416.  
  1417. /******************************************************************************
  1418.  **                                                                             **
  1419.  **                        Pixmap Marker Data Structure Definitions             **
  1420.  **                                                                             **
  1421.  *****************************************************************************/
  1422.  
  1423. typedef struct TQ3PixmapMarkerData {
  1424.     TQ3Point3D            position;
  1425.     long                xOffset;
  1426.     long                yOffset;
  1427.     TQ3StoragePixmap    pixmap;
  1428.     TQ3AttributeSet        pixmapMarkerAttributeSet;
  1429. } TQ3PixmapMarkerData;
  1430.  
  1431.  
  1432. /******************************************************************************
  1433.  **                                                                             **
  1434.  **                                Pixmap Marker Routines                         **
  1435.  **                                                                             **
  1436.  *****************************************************************************/
  1437.  
  1438. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3PixmapMarker_New(
  1439.     const TQ3PixmapMarkerData    *pixmapMarkerData);
  1440.  
  1441. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_Submit(
  1442.     const TQ3PixmapMarkerData    *pixmapMarkerData,
  1443.     TQ3ViewObject                view);
  1444.     
  1445. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_SetData(
  1446.     TQ3GeometryObject            geometry, 
  1447.     const TQ3PixmapMarkerData    *pixmapMarkerData);
  1448.  
  1449. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_GetData(
  1450.     TQ3GeometryObject            geometry,
  1451.     TQ3PixmapMarkerData            *pixmapMarkerData);
  1452.  
  1453. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_EmptyData(
  1454.     TQ3PixmapMarkerData            *pixmapMarkerData);
  1455.     
  1456. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_GetPosition(
  1457.     TQ3GeometryObject            pixmapMarker,
  1458.     TQ3Point3D                    *position);
  1459.  
  1460. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_SetPosition(
  1461.     TQ3GeometryObject            pixmapMarker,
  1462.     const TQ3Point3D            *position);
  1463.     
  1464. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_GetXOffset(
  1465.     TQ3GeometryObject            pixmapMarker,
  1466.     long                        *xOffset);
  1467.  
  1468. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_SetXOffset(
  1469.     TQ3GeometryObject            pixmapMarker,
  1470.     long                        xOffset);
  1471.  
  1472. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_GetYOffset(
  1473.     TQ3GeometryObject            pixmapMarker,
  1474.     long                        *yOffset);
  1475.  
  1476. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_SetYOffset(
  1477.     TQ3GeometryObject            pixmapMarker,
  1478.     long                        yOffset);
  1479.  
  1480. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_GetPixmap(
  1481.     TQ3GeometryObject            pixmapMarker,
  1482.     TQ3StoragePixmap            *pixmap);
  1483.  
  1484. QD3D_EXPORT TQ3Status QD3D_CALL Q3PixmapMarker_SetPixmap(
  1485.     TQ3GeometryObject            pixmapMarker,
  1486.     const TQ3StoragePixmap        *pixmap);
  1487.  
  1488.  
  1489. /******************************************************************************
  1490.  **                                                                             **
  1491.  **                        Point Data Structure Definitions                     **
  1492.  **                                                                             **
  1493.  *****************************************************************************/
  1494.  
  1495. typedef struct TQ3PointData {
  1496.     TQ3Point3D            point;
  1497.     TQ3AttributeSet        pointAttributeSet;
  1498. } TQ3PointData;
  1499.  
  1500.  
  1501. /******************************************************************************
  1502.  **                                                                             **
  1503.  **                                Point Routines                                 **
  1504.  **                                                                             **
  1505.  *****************************************************************************/
  1506.     
  1507. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Point_New(
  1508.     const TQ3PointData         *pointData);
  1509.  
  1510. QD3D_EXPORT TQ3Status QD3D_CALL Q3Point_Submit(
  1511.     const TQ3PointData         *pointData,
  1512.     TQ3ViewObject             view);
  1513.     
  1514. QD3D_EXPORT TQ3Status QD3D_CALL Q3Point_GetData(
  1515.     TQ3GeometryObject         point,
  1516.     TQ3PointData            *pointData);
  1517.     
  1518. QD3D_EXPORT TQ3Status QD3D_CALL Q3Point_SetData(
  1519.     TQ3GeometryObject         point,
  1520.     const TQ3PointData         *pointData);
  1521.     
  1522. QD3D_EXPORT TQ3Status QD3D_CALL Q3Point_EmptyData(
  1523.     TQ3PointData             *pointData);    
  1524.     
  1525. QD3D_EXPORT TQ3Status QD3D_CALL Q3Point_SetPosition(
  1526.     TQ3GeometryObject        point,
  1527.     const TQ3Point3D        *position);
  1528.     
  1529. QD3D_EXPORT TQ3Status QD3D_CALL Q3Point_GetPosition(
  1530.     TQ3GeometryObject        point,
  1531.     TQ3Point3D                *position);
  1532.  
  1533.  
  1534. /******************************************************************************
  1535.  **                                                                             **
  1536.  **                        Polygon Data Structure Definitions                     **
  1537.  **                                                                             **
  1538.  *****************************************************************************/
  1539.  
  1540. typedef struct TQ3PolygonData {
  1541.     unsigned long        numVertices;        
  1542.     TQ3Vertex3D            *vertices;            
  1543.     TQ3AttributeSet        polygonAttributeSet;
  1544. } TQ3PolygonData;
  1545.  
  1546.  
  1547. /******************************************************************************
  1548.  **                                                                             **
  1549.  **                            Polygon Routines                                 **
  1550.  **                                                                             **
  1551.  *****************************************************************************/
  1552.  
  1553. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Polygon_New(
  1554.     const TQ3PolygonData    *polygonData);
  1555.  
  1556. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polygon_Submit(
  1557.     const TQ3PolygonData    *polygonData,
  1558.     TQ3ViewObject            view);
  1559.     
  1560. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polygon_SetData(
  1561.     TQ3GeometryObject        polygon, 
  1562.     const TQ3PolygonData    *polygonData);
  1563.  
  1564. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polygon_GetData(
  1565.     TQ3GeometryObject        polygon,
  1566.     TQ3PolygonData            *polygonData);
  1567.  
  1568. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polygon_EmptyData(
  1569.     TQ3PolygonData            *polygonData);
  1570.  
  1571. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polygon_GetVertexPosition(
  1572.     TQ3GeometryObject        polygon,
  1573.     unsigned long            index,
  1574.     TQ3Point3D                *point);
  1575.  
  1576. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polygon_SetVertexPosition(
  1577.     TQ3GeometryObject        polygon,
  1578.     unsigned long            index,
  1579.     const TQ3Point3D        *point);
  1580.  
  1581. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polygon_GetVertexAttributeSet(
  1582.     TQ3GeometryObject        polygon,
  1583.     unsigned long            index,
  1584.     TQ3AttributeSet            *attributeSet);
  1585.  
  1586. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polygon_SetVertexAttributeSet(
  1587.     TQ3GeometryObject        polygon,
  1588.     unsigned long            index,
  1589.     TQ3AttributeSet            attributeSet);
  1590.  
  1591.  
  1592. /******************************************************************************
  1593.  **                                                                             **
  1594.  **                        Polyhedron Data Structure Definitions                 **
  1595.  **                                                                             **
  1596.  *****************************************************************************/
  1597.  
  1598. typedef enum TQ3PolyhedronEdgeMasks {
  1599.     kQ3PolyhedronEdgeNone    = 0,
  1600.     kQ3PolyhedronEdge01        = 1 << 0,
  1601.     kQ3PolyhedronEdge12        = 1 << 1,
  1602.     kQ3PolyhedronEdge20        = 1 << 2,
  1603.     kQ3PolyhedronEdgeAll    = kQ3PolyhedronEdge01     | 
  1604.                               kQ3PolyhedronEdge12    |
  1605.                               kQ3PolyhedronEdge20
  1606. } TQ3PolyhedronEdgeMasks;
  1607.  
  1608. typedef unsigned long TQ3PolyhedronEdge;
  1609.  
  1610. typedef struct TQ3PolyhedronEdgeData {
  1611.     unsigned long                vertexIndices[2];
  1612.     unsigned long                triangleIndices[2];
  1613.     TQ3AttributeSet                edgeAttributeSet;
  1614. } TQ3PolyhedronEdgeData;
  1615.     
  1616. typedef struct TQ3PolyhedronTriangleData {
  1617.     unsigned long                vertexIndices[3];
  1618.     TQ3PolyhedronEdge            edgeFlag;
  1619.     TQ3AttributeSet                triangleAttributeSet;
  1620. } TQ3PolyhedronTriangleData;
  1621.  
  1622. typedef struct TQ3PolyhedronData {
  1623.     unsigned long                numVertices;
  1624.     TQ3Vertex3D                    *vertices;
  1625.     unsigned long                numEdges;
  1626.     TQ3PolyhedronEdgeData        *edges;
  1627.     unsigned long                numTriangles;
  1628.     TQ3PolyhedronTriangleData    *triangles;
  1629.     TQ3AttributeSet                polyhedronAttributeSet;
  1630. } TQ3PolyhedronData;
  1631.  
  1632.  
  1633. /******************************************************************************
  1634.  **                                                                             **
  1635.  **                                Polyhedron Routines                             **
  1636.  **                                                                             **
  1637.  *****************************************************************************/
  1638.  
  1639. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Polyhedron_New(
  1640.     const TQ3PolyhedronData        *polyhedronData);
  1641.  
  1642. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_Submit(
  1643.     const TQ3PolyhedronData        *polyhedronData,
  1644.     TQ3ViewObject                view);
  1645.     
  1646. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_SetData(
  1647.     TQ3GeometryObject            polyhedron, 
  1648.     const TQ3PolyhedronData        *polyhedronData);
  1649.  
  1650. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_GetData(
  1651.     TQ3GeometryObject            polyhedron,
  1652.     TQ3PolyhedronData            *polyhedronData);
  1653.  
  1654. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_EmptyData(
  1655.     TQ3PolyhedronData            *polyhedronData);
  1656.     
  1657. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_SetVertexPosition(
  1658.     TQ3GeometryObject            polyhedron,
  1659.     unsigned long                index,
  1660.     const TQ3Point3D            *point);
  1661.     
  1662. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_GetVertexPosition(
  1663.     TQ3GeometryObject            polyhedron,
  1664.     unsigned long                index,
  1665.     TQ3Point3D                    *point);
  1666.  
  1667. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_SetVertexAttributeSet(
  1668.     TQ3GeometryObject            polyhedron,
  1669.     unsigned long                index,
  1670.     TQ3AttributeSet                attributeSet);
  1671.     
  1672. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_GetVertexAttributeSet(
  1673.     TQ3GeometryObject            polyhedron,
  1674.     unsigned long                index,
  1675.     TQ3AttributeSet                *attributeSet);
  1676.  
  1677. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_GetTriangleData(
  1678.     TQ3GeometryObject                polyhedron,
  1679.     unsigned long                    triangleIndex,
  1680.     TQ3PolyhedronTriangleData        *triangleData);
  1681.  
  1682. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_SetTriangleData(
  1683.     TQ3GeometryObject                polyhedron,
  1684.     unsigned long                    triangleIndex,
  1685.     const TQ3PolyhedronTriangleData    *triangleData);
  1686.  
  1687. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_GetEdgeData(
  1688.     TQ3GeometryObject            polyhedron,
  1689.     unsigned long                edgeIndex,
  1690.     TQ3PolyhedronEdgeData        *edgeData);
  1691.  
  1692. QD3D_EXPORT TQ3Status QD3D_CALL Q3Polyhedron_SetEdgeData(
  1693.     TQ3GeometryObject            polyhedron,
  1694.     unsigned long                edgeIndex,
  1695.     const TQ3PolyhedronEdgeData    *edgeData);
  1696.  
  1697.  
  1698. /******************************************************************************
  1699.  **                                                                             **
  1700.  **                        PolyLine Data Structure Definitions                     **
  1701.  **                                                                             **
  1702.  *****************************************************************************/
  1703.  
  1704. typedef struct TQ3PolyLineData {
  1705.     unsigned long       numVertices;            
  1706.     TQ3Vertex3D            *vertices;                
  1707.     TQ3AttributeSet        *segmentAttributeSet;        
  1708.     TQ3AttributeSet        polyLineAttributeSet;        
  1709. } TQ3PolyLineData;
  1710.     
  1711.  
  1712. /******************************************************************************
  1713.  **                                                                             **
  1714.  **                            PolyLine Routines                                 **
  1715.  **                                                                             **
  1716.  *****************************************************************************/
  1717.  
  1718. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3PolyLine_New(
  1719.     const TQ3PolyLineData    *polylineData);
  1720.  
  1721. QD3D_EXPORT TQ3Status QD3D_CALL Q3PolyLine_Submit(
  1722.     const TQ3PolyLineData    *polyLineData,
  1723.     TQ3ViewObject            view);
  1724.     
  1725. QD3D_EXPORT TQ3Status QD3D_CALL Q3PolyLine_SetData(
  1726.     TQ3GeometryObject        polyLine, 
  1727.     const TQ3PolyLineData    *polyLineData);
  1728.  
  1729. QD3D_EXPORT TQ3Status QD3D_CALL Q3PolyLine_GetData(
  1730.     TQ3GeometryObject        polyLine,
  1731.     TQ3PolyLineData            *polyLineData);
  1732.  
  1733. QD3D_EXPORT TQ3Status QD3D_CALL Q3PolyLine_EmptyData(
  1734.     TQ3PolyLineData            *polyLineData);
  1735.         
  1736. QD3D_EXPORT TQ3Status QD3D_CALL Q3PolyLine_GetVertexPosition(
  1737.     TQ3GeometryObject        polyLine,
  1738.     unsigned long            index,
  1739.     TQ3Point3D                *position);
  1740.  
  1741. QD3D_EXPORT TQ3Status QD3D_CALL Q3PolyLine_SetVertexPosition(
  1742.     TQ3GeometryObject        polyLine,
  1743.     unsigned long            index,
  1744.     const TQ3Point3D        *position);
  1745.  
  1746. QD3D_EXPORT TQ3Status QD3D_CALL Q3PolyLine_GetVertexAttributeSet(
  1747.     TQ3GeometryObject        polyLine,
  1748.     unsigned long            index,
  1749.     TQ3AttributeSet            *attributeSet);
  1750.  
  1751. QD3D_EXPORT TQ3Status QD3D_CALL Q3PolyLine_SetVertexAttributeSet(
  1752.     TQ3GeometryObject        polyLine,
  1753.     unsigned long            index,
  1754.     TQ3AttributeSet            attributeSet);
  1755.  
  1756. QD3D_EXPORT TQ3Status QD3D_CALL Q3PolyLine_GetSegmentAttributeSet(
  1757.     TQ3GeometryObject        polyLine,
  1758.     unsigned long            index,
  1759.     TQ3AttributeSet            *attributeSet);
  1760.  
  1761. QD3D_EXPORT TQ3Status QD3D_CALL Q3PolyLine_SetSegmentAttributeSet(
  1762.     TQ3GeometryObject        polyLine,
  1763.     unsigned long            index,
  1764.     TQ3AttributeSet            attributeSet);
  1765.  
  1766.  
  1767. /******************************************************************************
  1768.  **                                                                             **
  1769.  **                        Torus Data Structure Definitions                     **
  1770.  **                                                                             **
  1771.  *****************************************************************************/
  1772.     
  1773. typedef struct TQ3TorusData {
  1774.     TQ3Point3D            origin;
  1775.     TQ3Vector3D            orientation;
  1776.     TQ3Vector3D            majorRadius;
  1777.     TQ3Vector3D            minorRadius;
  1778.     float                ratio;
  1779.     float                uMin, uMax,
  1780.                         vMin, vMax;
  1781.     TQ3EndCap            caps;
  1782.     TQ3AttributeSet        interiorAttributeSet;
  1783.     TQ3AttributeSet        torusAttributeSet;
  1784. } TQ3TorusData;
  1785.  
  1786.  
  1787. /******************************************************************************
  1788.  **                                                                             **
  1789.  **                                Torus Routines                                 **
  1790.  **                                                                             **
  1791.  *****************************************************************************/
  1792.  
  1793. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Torus_New(
  1794.     const TQ3TorusData        *torusData);
  1795.  
  1796. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_Submit(
  1797.     const TQ3TorusData        *torusData, 
  1798.     TQ3ViewObject            view);
  1799.     
  1800. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_SetData(
  1801.     TQ3GeometryObject        torus, 
  1802.     const TQ3TorusData        *torusData);
  1803.  
  1804. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_GetData(
  1805.     TQ3GeometryObject        torus, 
  1806.     TQ3TorusData            *torusData);
  1807.  
  1808. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_SetOrigin(
  1809.     TQ3GeometryObject        torus,
  1810.     const TQ3Point3D        *origin);
  1811.  
  1812. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_SetOrientation(
  1813.     TQ3GeometryObject        torus,
  1814.     const TQ3Vector3D        *orientation);
  1815.  
  1816. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_SetMajorRadius(
  1817.     TQ3GeometryObject        torus,
  1818.     const TQ3Vector3D        *majorRadius);
  1819.  
  1820. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_SetMinorRadius(
  1821.     TQ3GeometryObject        torus,
  1822.     const TQ3Vector3D        *minorRadius);
  1823.  
  1824. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_SetRatio(
  1825.     TQ3GeometryObject        torus,
  1826.     float                    ratio);
  1827.  
  1828. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_GetOrigin(
  1829.     TQ3GeometryObject        torus,
  1830.     TQ3Point3D                *origin);
  1831.  
  1832. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_GetOrientation(
  1833.     TQ3GeometryObject        torus,
  1834.     TQ3Vector3D                *orientation);
  1835.  
  1836. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_GetMajorRadius(
  1837.     TQ3GeometryObject        torus,
  1838.     TQ3Vector3D                *majorRadius);
  1839.  
  1840. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_GetMinorRadius(
  1841.     TQ3GeometryObject        torus,
  1842.     TQ3Vector3D                *minorRadius);
  1843.  
  1844. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_GetRatio(
  1845.     TQ3GeometryObject        torus,
  1846.      float                    *ratio);
  1847.      
  1848.  
  1849. QD3D_EXPORT TQ3Status QD3D_CALL Q3Torus_EmptyData(
  1850.     TQ3TorusData            *torusData);
  1851.  
  1852.  
  1853. /******************************************************************************
  1854.  **                                                                             **
  1855.  **                        Triangle Data Structure Definitions                     **
  1856.  **                                                                             **
  1857.  *****************************************************************************/
  1858.  
  1859. typedef struct TQ3TriangleData {
  1860.     TQ3Vertex3D            vertices[3];
  1861.     TQ3AttributeSet        triangleAttributeSet;
  1862. } TQ3TriangleData;
  1863.  
  1864.  
  1865. /******************************************************************************
  1866.  **                                                                             **
  1867.  **                            Triangle Routines                                 **
  1868.  **                                                                             **
  1869.  *****************************************************************************/
  1870.  
  1871. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3Triangle_New(
  1872.     const TQ3TriangleData    *triangleData);
  1873.  
  1874. QD3D_EXPORT TQ3Status QD3D_CALL Q3Triangle_Submit(
  1875.     const TQ3TriangleData    *triangleData,
  1876.     TQ3ViewObject            view);
  1877.     
  1878. QD3D_EXPORT TQ3Status QD3D_CALL Q3Triangle_SetData(
  1879.     TQ3GeometryObject        triangle, 
  1880.     const TQ3TriangleData    *triangleData);
  1881.  
  1882. QD3D_EXPORT TQ3Status QD3D_CALL Q3Triangle_GetData(
  1883.     TQ3GeometryObject        triangle,
  1884.     TQ3TriangleData            *triangleData);
  1885.  
  1886. QD3D_EXPORT TQ3Status QD3D_CALL Q3Triangle_EmptyData(
  1887.     TQ3TriangleData            *triangleData);
  1888.  
  1889. QD3D_EXPORT TQ3Status QD3D_CALL Q3Triangle_GetVertexPosition(
  1890.     TQ3GeometryObject        triangle,
  1891.     unsigned long            index,
  1892.     TQ3Point3D                *point);
  1893.  
  1894. QD3D_EXPORT TQ3Status QD3D_CALL Q3Triangle_SetVertexPosition(
  1895.     TQ3GeometryObject        triangle,
  1896.     unsigned long            index,
  1897.     const TQ3Point3D        *point);
  1898.  
  1899. QD3D_EXPORT TQ3Status QD3D_CALL Q3Triangle_GetVertexAttributeSet(
  1900.     TQ3GeometryObject        triangle,
  1901.     unsigned long            index,
  1902.     TQ3AttributeSet            *attributeSet);
  1903.  
  1904. QD3D_EXPORT TQ3Status QD3D_CALL Q3Triangle_SetVertexAttributeSet(
  1905.     TQ3GeometryObject        triangle,
  1906.     unsigned long             index,
  1907.     TQ3AttributeSet             attributeSet);
  1908.  
  1909.  
  1910. /******************************************************************************
  1911.  **                                                                             **
  1912.  **                        TriGrid Data Structure Definitions                     **
  1913.  **                                                                             **
  1914.  *****************************************************************************/
  1915.  
  1916. typedef struct TQ3TriGridData {
  1917.     unsigned long        numRows;            
  1918.     unsigned long        numColumns;
  1919.     TQ3Vertex3D            *vertices;            
  1920.     TQ3AttributeSet        *facetAttributeSet;
  1921.     TQ3AttributeSet        triGridAttributeSet;
  1922. } TQ3TriGridData;
  1923.  
  1924.  
  1925. /******************************************************************************
  1926.  **                                                                             **
  1927.  **                                TriGrid Routines                             **
  1928.  **                                                                             **
  1929.  *****************************************************************************/
  1930.  
  1931. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3TriGrid_New(
  1932.     const TQ3TriGridData    *triGridData);
  1933.  
  1934. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriGrid_Submit(
  1935.     const TQ3TriGridData    *triGridData,
  1936.     TQ3ViewObject            view);
  1937.     
  1938. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriGrid_SetData(
  1939.     TQ3GeometryObject        triGrid, 
  1940.     const TQ3TriGridData    *triGridData);
  1941.  
  1942. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriGrid_GetData(
  1943.     TQ3GeometryObject        triGrid,
  1944.     TQ3TriGridData            *triGridData);
  1945.  
  1946. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriGrid_EmptyData(
  1947.     TQ3TriGridData            *triGridData);
  1948.  
  1949. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriGrid_GetVertexPosition(
  1950.     TQ3GeometryObject        triGrid,
  1951.     unsigned long            rowIndex,
  1952.     unsigned long            columnIndex,
  1953.     TQ3Point3D                *position);
  1954.  
  1955. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriGrid_SetVertexPosition(
  1956.     TQ3GeometryObject        triGrid,
  1957.     unsigned long            rowIndex,
  1958.     unsigned long            columnIndex,
  1959.     const TQ3Point3D        *position);
  1960.  
  1961. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriGrid_GetVertexAttributeSet(
  1962.     TQ3GeometryObject        triGrid,
  1963.     unsigned long            rowIndex,
  1964.     unsigned long            columnIndex,
  1965.     TQ3AttributeSet            *attributeSet);
  1966.  
  1967. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriGrid_SetVertexAttributeSet(
  1968.     TQ3GeometryObject        triGrid,
  1969.     unsigned long            rowIndex,
  1970.     unsigned long            columnIndex,
  1971.     TQ3AttributeSet            attributeSet);
  1972.  
  1973. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriGrid_GetFacetAttributeSet(
  1974.     TQ3GeometryObject        triGrid,
  1975.     unsigned long            faceIndex,
  1976.     TQ3AttributeSet            *facetAttributeSet);
  1977.  
  1978. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriGrid_SetFacetAttributeSet(
  1979.     TQ3GeometryObject        triGrid,
  1980.     unsigned long            faceIndex,
  1981.     TQ3AttributeSet            facetAttributeSet);
  1982.  
  1983.  
  1984. /******************************************************************************
  1985.  **                                                                             **
  1986.  **                        TriMesh Data Structure Definitions                     **
  1987.  **                                                                             **
  1988.  *****************************************************************************/
  1989.  
  1990. typedef struct TQ3TriMeshTriangleData {
  1991.     unsigned long        pointIndices[3];
  1992. } TQ3TriMeshTriangleData;
  1993.  
  1994. typedef struct TQ3TriMeshEdgeData {
  1995.     unsigned long        pointIndices[2];
  1996.     unsigned long        triangleIndices[2];
  1997. } TQ3TriMeshEdgeData;
  1998.  
  1999. typedef struct TQ3TriMeshAttributeData {
  2000.     TQ3AttributeType    attributeType;        /* The type of attribute          */
  2001.     void                *data;                /* Pointer to the contiguous     */
  2002.                                             /* attribute data.                 */
  2003.     char                *attributeUseArray; /* This is only used with custom */
  2004.                                             /* attributes                      */
  2005. } TQ3TriMeshAttributeData;
  2006.  
  2007. typedef struct TQ3TriMeshData {
  2008.     TQ3AttributeSet                triMeshAttributeSet;
  2009.     
  2010.     unsigned long                numTriangles;
  2011.     TQ3TriMeshTriangleData        *triangles;
  2012.     
  2013.     unsigned long                numTriangleAttributeTypes;
  2014.     TQ3TriMeshAttributeData        *triangleAttributeTypes;
  2015.     
  2016.     unsigned long                numEdges;
  2017.     TQ3TriMeshEdgeData            *edges;
  2018.     
  2019.     unsigned long                numEdgeAttributeTypes;
  2020.     TQ3TriMeshAttributeData        *edgeAttributeTypes;
  2021.     
  2022.     unsigned long                numPoints;
  2023.     TQ3Point3D                    *points;
  2024.     
  2025.     unsigned long                numVertexAttributeTypes;
  2026.     TQ3TriMeshAttributeData        *vertexAttributeTypes;
  2027.  
  2028.     TQ3BoundingBox                bBox;
  2029. } TQ3TriMeshData;
  2030.  
  2031.  
  2032. /******************************************************************************
  2033.  **                                                                             **
  2034.  **                            TriMesh Routines                                 **
  2035.  **                                                                             **
  2036.  *****************************************************************************/
  2037.  
  2038. QD3D_EXPORT TQ3GeometryObject QD3D_CALL Q3TriMesh_New(
  2039.     const TQ3TriMeshData    *triMeshData);
  2040.  
  2041. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriMesh_Submit(
  2042.     const TQ3TriMeshData    *triMeshData,
  2043.     TQ3ViewObject            view);
  2044.     
  2045. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriMesh_SetData(
  2046.     TQ3GeometryObject        triMesh, 
  2047.     const TQ3TriMeshData    *triMeshData);
  2048.  
  2049. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriMesh_GetData(
  2050.     TQ3GeometryObject        triMesh,
  2051.     TQ3TriMeshData            *triMeshData);
  2052.  
  2053. QD3D_EXPORT TQ3Status QD3D_CALL Q3TriMesh_EmptyData(
  2054.     TQ3TriMeshData            *triMeshData);
  2055.     
  2056.  
  2057. #ifdef __cplusplus
  2058. }
  2059. #endif    /* __cplusplus */
  2060.  
  2061. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  2062.  
  2063. #if defined(__xlc__) || defined(__XLC121__)
  2064.     #pragma options enum=reset
  2065.     #pragma options align=reset
  2066. #elif defined(__MWERKS__)
  2067.     #pragma enumsalwaysint reset
  2068.     #pragma options align=reset
  2069. #elif defined(__MRC__) || defined(__SC__)
  2070.     #if PRAGMA_ENUM_RESET_QD3DGEOM
  2071.         #pragma options(pack_enums)
  2072.         #undef PRAGMA_ENUM_RESET_QD3DGEOM
  2073.     #endif
  2074.     #pragma options align=reset
  2075. #endif
  2076.  
  2077. #endif  /* OS_MACINTOSH */
  2078.  
  2079. #endif  /* QD3DGeometry_h  */
  2080.